package es.udc.fbellas.j2ee.tiendaweb.model.administradorfacade.plain.actions;

import java.sql.Connection;
import java.util.ArrayList;
import java.util.List;

import javax.sql.DataSource;

import es.udc.fbellas.j2ee.tiendaweb.model.detallespedido.DAO.SQLDetallesPedidoDAO;
import es.udc.fbellas.j2ee.tiendaweb.model.detallespedido.DAO.SQLDetallesPedidoDAOFactory;
import es.udc.fbellas.j2ee.tiendaweb.model.lineapedido.DAO.SQLLineaPedidoDAO;
import es.udc.fbellas.j2ee.tiendaweb.model.lineapedido.DAO.SQLLineaPedidoDAOFactory;
import es.udc.fbellas.j2ee.tiendaweb.model.usuario.DAO.SQLUsuarioProfileDAO;
import es.udc.fbellas.j2ee.tiendaweb.model.usuario.DAO.SQLUsuarioProfileDAOFactory;
//import es.udc.fbellas.j2ee.util.exceptions.InstanceNotFoundException;
import es.udc.fbellas.j2ee.util.exceptions.InternalErrorException;
import es.udc.fbellas.j2ee.util.sql.GeneralOperations;
import es.udc.fbellas.j2ee.util.sql.SimpleDataSource;
import es.udc.fbellas.j2ee.util.sql.TransactionalPlainAction;

	public class ServirPedidosAction implements TransactionalPlainAction{
		private String login;
		private String enpassword;
		
		public ServirPedidosAction(String login,String enpassword){
			this.login=login;
			this.enpassword=enpassword;
			
		}

	public Object execute(Connection connection) 
	throws InternalErrorException {
		List<Integer> idPedidos = new ArrayList<Integer>();
		List<Integer> idLineas = new ArrayList<Integer>();
	
		int pedido=0;
		int linea=0;
		try { 
            DataSource dataSource = new SimpleDataSource();
            connection = dataSource.getConnection();   
            
	       SQLUsuarioProfileDAO usuarioDAO = SQLUsuarioProfileDAOFactory.getDAO();            
	        if (usuarioDAO.exists(connection, login))
	        {
	        	SQLDetallesPedidoDAO detallesDAO = SQLDetallesPedidoDAOFactory.getDAO();
	        	idPedidos=detallesDAO.findPendientes(connection);
	        	SQLLineaPedidoDAO lineasDAO = SQLLineaPedidoDAOFactory.getDAO();

	        	
	        	do{
	        		linea=0;
	        		idLineas=lineasDAO.findPendientes(connection,idPedidos.get(pedido));
	        		if(idLineas!=null){
		        	
	        			do{
	        				lineasDAO.actualizaEstado(connection, idLineas.get(linea));
	        				linea++;
	        			}while (linea<idLineas.size());
	        			detallesDAO.actualizaEstado(connection, idPedidos.get(pedido));
	        		}
	        		pedido++;
	        	}while (pedido<idPedidos.size());
	        	
	        }
	        
	    	return null;
		 } catch (Exception e) {
	            e.printStackTrace();
	        } finally {
	            try {
	                GeneralOperations.closeConnection(connection);
	            } catch (InternalErrorException e) {
	                e.printStackTrace();
	            }
             return null;
	        }  
	}
}